Taller de Análisis de Datos y Detección de Señales para la Toma de Decisiones en Seguridad de Vacunas
En el marco de la cooperación técnica internacional para hacer frente a los desafíos de la pandemia por COVID-19 y la implementación de nuevas vacunas, la Organización Panamericana de la Salud (OPS) ha diseñado una estrategia integral de capacitación para fortalecer las capacidades nacionales en la vigilancia de Eventos Supuestamente Atribuibles a la Vacunación o Inmunización (ESAVI).
El propósito del taller de análisis de datos y detección de señales para la toma de decisiones en la seguridad de vacunas es consolidar y perfeccionar las capacidades de vigilancia de ESAVI, tanto a nivel nacional como subnacional, mediante la utilización de herramientas básicas y avanzadas de análisis de datos y su aplicación en estudios de casos prácticos. Se busca que los participantes adquieran las habilidades necesarias para realizar una vigilancia integral, abarcando la notificación, investigación, análisis y evaluación de causalidad de los eventos adversos asociados a la vacunación.
Los objetivos de este taller se alinean con los esfuerzos de los países para garantizar un monitoreo continuo y riguroso de la seguridad de las vacunas, asegurando una respuesta oportuna y basada en la evidencia ante cualquier situación que pudiera comprometer la confianza en los programas de inmunización.
Fortalecer las capacidades de los actores involucrados en el sistema de vigilancia de ESAVI para la toma de decisiones en seguridad de vacunas basada en el análisis e interpretación de datos del evento y de inmunizaciones.
Sistematizar las prácticas de análisis: Desarrollar una práctica sistemática para el análisis e interpretación de datos de vigilancia de ESAVI.
Sospechar en forma oportuna: Promover la reflexión crítica sobre los resultados del análisis de vigilancia de ESAVI como facilitador para la sospecha y detección oportuna de comportamientos anómalos en los datos.
Implementar técnicas para el análisis descriptivo y detección de señales: Conocer e implementar técnicas de análisis de datos para responder interrogantes de seguridad de vacunas.
Usar Rstudio: Conocer Rstudio para el análisis de datos de vigilancia de ESAVI.
Programa Nacional de inmunizaciones
Autoridad reguladora nacional o centro nacional de farmacovigilancia
Institutos nacionales de salud
Epidemiologos, estadísticos y analistas de datos, de áreas de salud
Conformación de grupos – Disfrute conocer otras personas, puede aprender mucho!
Cada grupo revisará las instrucciones y usará un reloj o cronómetro para terminar el análisis de cada caso a tiempo
Todos los participantes deben tomar notas porque podrían ser llamados a dar su opinión durante la discusión
Se seleccionará una persona en forma aleatoria para presentar conclusiones y retroalimentación en plenaria
Todas las opiniones son importantes. Tenga en cuenta las posturas/opiniones de cada participante en su respuesta al ejercicio. Una opinión se puede discutir y perfeccionar, pero nunca ignorar.
Constancia de participación
QR de escarapela para asistencia
En la mañana y en la tarde
Participante deberá contar con 3 registros
Día 1 | ||||||
|---|---|---|---|---|---|---|
Día | Hora Inicio | Hora Fin | Duración Mins | Tema | Metodología | Responsable |
Día 1 | 08:00 | 08:30 | 30 | Apertura del taller | Presentación en plenaria | Autoridad MSP Ecuador |
08:30 | 08:40 | 10 | Objetivos y metodología | Presentación en plenaria | Analía Cáceres | |
08:40 | 09:10 | 30 | Verificación de instalación de recursos para el taller | Presentación en plenaria | Carlos Falla | |
09:10 | 09:40 | 30 | Accesos a materiales del taller | Presentación en plenaria | Carlos Falla (OPS/WDC) | |
09:40 | 09:55 | 15 | Escenario Botania y presentación Actividad 1: Fundamentos sobre el análisis de datos de seguridad de vacunas | Presentación en plenaria | Analía Cáceres (OPS/WDC) | |
09:55 | 10:10 | 15 | Actividad 1. Reflexiones previas acerca del análisis | Trabajo en grupo | ||
10:10 | 10:25 | 15 | Actividad 1. Espacio práctico | Trabajo en grupo | ||
10:25 | 10:40 | 15 | Actividad 1. Socialización de resultados | Discusión en plenaria | Analía Cáceres (OPS/WDC) | |
10:40 | 11:00 | 20 | Coffee Break | |||
11:00 | 11:05 | 05 | Escenario Botania y presentación Actividad 2. Análisis de Serie de Tiempo en la Vigilancia de ESAVI | Presentación en plenaria | Felipe Molina | |
11:05 | 11:15 | 10 | Actividad 2. Reflexiones previas acerca del análisis | Trabajo en grupo | ||
11:15 | 11:30 | 15 | Actividad 2. Socialización reflexiones | Discusión en plenaria | ||
11:30 | 13:00 | 90 | Actividad 2. Caso ejemplo. Cápsula teórico-práctica. | Ejercicio guiado | Carlos Falla (OPS/WDC) | |
13:00 | 14:00 | 60 | Almuerzo | |||
14:00 | 15:30 | 90 | Actividad 2. Práctica en RStudio: Caso Botania | Trabajo en grupo | Carlos Falla (OPS/WDC) | |
15:30 | 15:50 | 20 | Coffee Break | |||
15:50 | 16:10 | 20 | Actividad 2. Práctica en RStudio: Caso Botania. Interpretación y socialización de resultados | Discusión en plenaria | Felipe Molina (OPS/WDC) | |
16:10 | 16:20 | 10 | Escenario Botania y presentación actividad 3A. Análisis sociodemográfico | Presentación en plenaria | Analía Cáceres (OPS/WDC) | |
16:20 | 16:35 | 15 | Actividad 3A. Reflexiones previas acerca del análisis | Trabajo en grupo | ||
16:35 | 16:50 | 15 | Actividad 3A. Socialización reflexiones | Discusión en plenaria | ||
16:50 | 17:00 | 10 | Cierre día 1 | |||
Día 2 | ||||||
|---|---|---|---|---|---|---|
Día | Hora Inicio | Hora Fin | Duración Mins | Tema | Metodología | Responsable |
Día 2 | 08:00 | 08:05 | 05 | Ingreso y bienvenida | Presentación en plenaria | Todos |
08:05 | 08:15 | 10 | Resumen día 1 y objetivos día 2 | Presentación en plenaria | Felipe Molina (OPS/WDC) | |
08:15 | 09:30 | 75 | Actividad 3A. Caso Botania. Cápsula teórico-práctica. | Ejercicio guiado | Carlos Falla (OPS/WDC) | |
09:30 | 09:50 | 20 | Coffee Break | |||
09:50 | 11:30 | 100 | Actividad 3 A. Análisis sociodemográfico. Práctica en RStudio: Caso Botania. | Ejercicio guiado | Carlos Falla (OPS/WDC) | |
11:30 | 11:50 | 20 | Actividad 3 A. Análisis sociodemográfico. Práctica en RStudio: Caso Botania. Interpretación de resultados | Trabajo en grupos | Felipe Molina (OPS/WDC) | |
11:50 | 12:25 | 35 | Actividad 3 A. Análisis sociodemográfico. Socialización de resultados | Discusión en plenaria | ||
12:25 | 13:25 | 60 | Almuerzo | |||
13:25 | 13:45 | 20 | Estándares terminológicos para análisis de datos | Presentación en plenaria | Analía Cáceres (OPS/WDC) | |
13:45 | 13:55 | 10 | Escenario Botania y presentación actividad 3B. Análisis de datos por vacuna y gravedad del ESAVI | Presentación en plenaria | Felipe Molina (OPS/WDC) | |
13:55 | 14:35 | 40 | Actividad 3 B. Caso ejemplo. Cápsula teórico-práctica | Ejercicio guiado | Carlos Falla (OPS/WDC) | |
14:35 | 14:55 | 20 | Coffee Break | |||
14:55 | 16:25 | 90 | Actividad 3B. Práctica en RStudio: Caso Botania | Trabajo en grupo | Carlos Falla (OPS/WDC) | |
16:25 | 16:35 | 10 | Actividad 3B: análisis por vacuna y gravedad, SOC/PT. Interpretación | Trabajo en grupo | Felipe Molina (OPS/WDC) | |
16:35 | 16:55 | 20 | Actividad 3B: análisis por vacuna y gravedad, SOC/PT. Socialización | Trabajo en grupo | Felipe Molina (OPS/WDC) | |
16:55 | 17:00 | 05 | Cierre día 2 | |||
Día 3 | ||||||
|---|---|---|---|---|---|---|
Día | Hora Inicio | Hora Fin | Duración Mins | Tema | Metodología | Responsable |
Día 3 | 08:00 | 08:10 | 10 | Ingreso y bienvenida | Presentación en plenaria | Todos |
08:10 | 08:20 | 10 | Resumen día 2 y objetivos día 3 | Presentación en plenaria | Felipe Molina (OPS/WDC) | |
08:20 | 08:30 | 10 | Actividad 4. Identificación de señales en seguridad de vacunas. Caso Botania | Presentación en plenaria | Analía Cáceres (OPS/WDC) | |
08:30 | 08:45 | 15 | Actividad 4. Reflexiones previas | Trabajo en grupo | ||
08:45 | 09:00 | 15 | Actividad 4. Identificación de señales en seguridad de vacunas. Socialización reflexiones | Discusión en plenaria | ||
09:00 | 09:40 | 40 | Vasculitis. Cápsula teórica práctica | Ejercicio guiado | Carlos Falla (OPS/WDC) | |
09:40 | 10:00 | 20 | Coffee Break | |||
10:00 | 11:00 | 60 | Actividad 4. CMQ ámbito general, tabla por vacuna y multiplot | Ejercicio guiado | Carlos Falla (OPS/WDC) | |
11:00 | 11:45 | 45 | Actividad 4. WHODrug | Trabajo en grupo | Felipe Molina (OPS/WDC) | |
11:45 | 12:15 | 30 | Actividad 4. WHODrug | Discusión en plenaria | Carlos Falla (OPS/WDC) | |
12:15 | 13:15 | 60 | Almuerzo | |||
13:15 | 13:35 | 20 | Actividad 5. Métodos de detección de señales | Presentación en plenaria | Felipe Molina (OPS/WDC) | |
13:35 | 14:00 | 25 | Actividad 5. Métodos de detección de señales. Reflexión en grupo | Trabajo en grupo | Analía Cáceres (OPS/WDC) | |
14:00 | 14:15 | 15 | Actividad 5. Métodos de detección de señales. Socialización | Presentación en plenaria | Analía Cáceres (OPS/WDC) | |
14:15 | 14:40 | 25 | Actividad 5. Cápsula teórico práctica | Ejercicio guiado | Carlos Falla (OPS/WDC) | |
14:40 | 15:00 | 20 | Coffee Break | |||
15:00 | 15:40 | 40 | Actividad 5. Práctica en RStudio: Análisis de Disproporcionalidad Caso Botania - Taquiarritmias | Ejercicio guiado | Carlos Falla (OPS/WDC) | |
15:40 | 16:00 | 20 | Actividad 5. Interpretación y socialización | Discusión en plenaria | Felipe Molina (OPS/WDC) | |
16:00 | 16:15 | 15 | Cierre día 3 | |||
La analítica de datos es un proceso que implica la recopilación, transformación y análisis de grandes volúmenes de datos para extraer información valiosa que facilite la toma de decisiones en diversos contextos. Esta disciplina se divide en tres categorías principales: analítica descriptiva, predictiva y prescriptiva (también conocida como prospectiva).
Analítica Descriptiva: Se centra en responder a la pregunta “¿qué ha ocurrido?”. Utiliza técnicas como resúmenes estadísticos, gráficos y visualizaciones para analizar los datos históricos y actuales, proporcionando una visión clara de los patrones y tendencias existentes.
Analítica Predictiva: Va un paso más allá y se ocupa de responder “¿qué podría ocurrir en el futuro?”. Se basa en modelos estadísticos, algoritmos de machine learning y análisis de patrones históricos para hacer predicciones sobre eventos futuros, como el comportamiento de los eventos o las tendencias de la vacunación.
Analítica Prescriptiva (Prospectiva): Este tipo de analítica responde a la pregunta “¿qué debería hacerse?”. Combina datos, algoritmos y reglas de negocio para recomendar acciones específicas que maximicen los resultados deseados. Es la forma más avanzada de analítica, ya que no solo predice el futuro, sino que también sugiere cómo actuar ante diferentes escenarios.
Cada una de estas ramas tiene su propio valor y aplicación en distintos contextos empresariales y científicos, proporcionando un marco integral para comprender y aprovechar al máximo los datos disponibles.
Las técnicas de análisis descriptivo (análisis exploratorio de datos), permiten entender el comportamiento general de los datos. El análisis exploratorio de datos (EDA, por sus siglas en inglés) es una técnica utilizada para comprender y visualizar los datos de una forma intuitiva. El objetivo principal de EDA es descubrir patrones, relaciones y tendencias en los datos, antes de llevar a cabo un análisis más riguroso.
Los siguientes pasos son los recomendados en un proceso de análisis exploratorio de datos: Comprensión de los datos, selección de variables, descripción de los datos, identificación de patrones,visualización y finalmente validación de la hipótesis:
Comprensión de los datos: Comprende en lograr un entendimiento del dominio de los datos, es decir, el entendimiento de ¿cómo se registran en la fuente de datos (capturan)?,¿cómo se relacionan e interpretan los datos en torno a su contexto?;¿cómo se relacionan variables entre sí y con el objetivo de análisis?.
Selección de variables: Una vez comprendido el contexto de la información, la lógica de los datos y ¿cómo estos se registran para almacenar la realidad medida?, se debe realizar una selección de variables a estudiar de acuerdo con los objetivos perseguidos. Por ejemplo:en el caso del análisis de ESAVI, deben identificarse las variables sociodemográficas, variables relacionadas al tiempo, proceso de vacunación e inmunización, y de diagnósticos a eventos presentes, entre otras que permitan caracterizarlos de manera concreta en un momento del tiempo específico. Esta selección contempla criterio conceptual y disciplinario para poder establecer qué variables relevantes para el análisis exploratorio.
Descripción de los datos: El análisis estadístico descriptivo básico de las variables, se requiere para comprender la distribución de los datos y consiste en la caracterización univariada mediante técnicas estadísticas.
Identificación de patrones: Con la finalidad de complementar el análisis estadístico univariado, se usan las técnicas estadísticas bivariadas o multivariadas para buscar patrones y relaciones entre las variables; como la correlación a través de coeficientes de correlación o tablas de contingencia. Consiguiente, se puedan plantear relaciones y causas en el comportamiento de algunas de las variables de interés; y así mismo se pueden usar técnicas de visualización.
Visualización: La creación de visualizaciones univariadas o bivariadas, ayudan a soportar los análisis y a robustecer el planteamiento de hipótesis a probar en los patrones detectados en la información. Para esto se deben tener en cuenta los elementos planteados por la teoría de la visualización, como las leyes de la percepción visual (proximidad, semejanza, cierre, continuidad y conectividad), el reconocimiento de patrones visuales, y las propiedades de la visualización (posición, forma, tamaño, color torno, textura y orientación). Es clave establecer con criterio qué gráfico utilizar para cada variable o cada relación planteada de estas, con el fin de enriquecer el análisis.
Validación de hipótesis: El planteamiento de la hipótesis hace referencia al planteamiento de afirmaciones susceptibles de prueba bajo la evidencia de los datos. Estas hipótesis se prueban con herramientas estadísticas llamadas pruebas de hipótesis e intervalos de confianza que determinan el nivel de aceptabilidad de un error al equivocarse al aceptar o rechazar una hipótesis. Acudir a estas pruebas da una certeza estadística basada en el nivel de confianza de la información analizada. Por esto la importancia de llegar a este punto habiendo cumplido con los pasos anteriores de análisis, planteados en este plan. El análisis exploratorio de datos es un proceso iterativo y puede requerir varias validaciones antes de llegar a conclusiones. Además, es importante tener en cuenta que EDA no es un sustituto de un análisis más riguroso, sino una herramienta para ayudar a comprender los datos y a prepararlos para un análisis más avanzado.
R: Es un lenguaje de programación y un entorno de software ampliamente utilizado para la estadística y la visualización de datos. Es una herramienta poderosa para el análisis de datos y la creación de gráficos.
RStudio: RStudio es un entorno de desarrollo integrado (IDE) diseñado específicamente para trabajar con R. Facilita la escritura de código, la visualización de resultados y la gestión de proyectos de análisis de datos.
Paquete (Package): Un paquete en R es un conjunto de funciones, datos y documentación que amplía la funcionalidad de R. Los paquetes son utilizados para realizar tareas específicas, como manipulación de datos, modelado estadístico o visualización.
Librería (Library): En R, una librería (también conocida como paquete) es un conjunto de funciones, datos y documentación predefinidos que extienden la funcionalidad del sistema base de R. Estas librerías se utilizan para realizar tareas específicas, como estadísticas avanzadas, visualización de datos, análisis de series temporales, entre otras. Para utilizar las funciones y datos de una librería en un análisis, primero debes cargar la librería en tu sesión de R utilizando la función library() o require(). Una vez cargada, puedes acceder y utilizar las funciones y datos proporcionados por esa librería en tu código. R tiene una amplia variedad de librerías disponibles, muchas de las cuales son desarrolladas por la comunidad de usuarios y están disponibles de forma gratuita en el repositorio CRAN (Comprehensive R Archive Network).
Data Frame: Un data frame es una estructura de datos fundamental en R que organiza los datos en filas y columnas, similar a una hoja de cálculo. Es la forma más común de almacenar datos en R.
Vector: Un vector en R es una estructura de datos unidimensional que puede contener elementos de un solo tipo (por ejemplo, números, caracteres o lógicos). Los vectores son fundamentales para realizar operaciones matemáticas y estadísticas.
Función (Function): En R, una función es un bloque de código que realiza una tareas y operaciones específicas cuando se llama con argumentos particulares. Las funciones son la base de la programación en R y se utilizan para realizar operaciones y análisis.
Gráfico (Plot): Los gráficos en R son representaciones visuales de datos. R ofrece numerosas funciones y paquetes para crear gráficos de alta calidad, como gráficos de dispersión, histogramas, diagramas de caja y muchos más.
Limpieza de Datos (Data Cleaning): La limpieza de datos en R se refiere al proceso de identificar y corregir errores o inconsistencias en los conjuntos de datos, como valores faltantes, valores atípicos o duplicados.
Análisis Estadístico: R es ampliamente utilizado para realizar análisis estadísticos, que incluyen pruebas de hipótesis, regresión, análisis de varianza y otras técnicas para comprender y resumir los datos.
Visualización de Datos: R es conocido por sus capacidades de visualización de datos. Se pueden crear gráficos informativos y atractivos utilizando paquetes como ggplot2 y lattice para explorar y comunicar patrones en los datos.
Script: Un script en R es un archivo que contiene una serie de comandos y funciones que se ejecutan secuencialmente para realizar una tarea específica. Los scripts son útiles para automatizar análisis y documentar el flujo de trabajo.
Interfaz de Línea de Comandos (CLI): R se puede utilizar en una interfaz de línea de comandos, donde los usuarios ingresan comandos uno por uno. Esto es útil para tareas interactivas y exploratorias.
IDE (Entorno de Desarrollo Integrado): Un IDE, como RStudio, proporciona una interfaz gráfica que facilita la escritura de código, la visualización de resultados y la gestión de proyectos en R.
Markdown: Markdown es un lenguaje de marcado ligero que se utiliza comúnmente en R para crear documentos reproducibles que combinan código, texto y gráficos en un solo archivo.
Paquete dplyr: dplyr es un paquete popular en R que proporciona funciones simples y eficientes para realizar tareas de manipulación de datos, como filtrado, selección y agregación.
El archivo de datos de Ventas corresponde a los datos de ventas de de un almacén de gran superficie en Botania. Contiene el registro individual de cada venta realizada durante los años 2017 a 2022 en dólares botánicos (DB). ASí msmo, contiene información detallada que permite analizar el rendimiento de las ventas, el comportamiento de los clientes y la gestión de inventarios.
El archivo de datos contiene 6 hojas, una por cada año de seguimiento, con el siguiente conjunto de variables:
Los ejercicios que se realizarán en este taller transcurren en Botania, un país ficticio creado con fines de entrenamiento.
Como se observa en el mapa, Botania se encuentra dividido en 19 áreas de salud:
Código | Provincia |
|---|---|
1 | Alcatraz |
2 | Almendras |
3 | Azulejos |
4 | Botones |
5 | Castañas |
6 | Castaños |
7 | Cispresina |
8 | Florandia |
9 | Fresno |
10 | Geranio |
11 | Helecho |
12 | Martillo |
13 | Nogales |
14 | Palmeto |
15 | Palmira |
16 | Pipian |
17 | Rascacielo |
18 | Robledalia |
19 | Rosales |
Mario y Zuly, químico farmacéutico y médica epidemióloga, respectivamente; se incorporan hoy al equipo de seguridad de vacunas que usted coordina en el Ministerio de Salud de Botania.
Las responsabilidades asignadas a Mario y Zuly consistirán en recopilar, analizar y difundir la información sobre los ESAVI que se reportan desde las áreas de Botania, con el fin de detectar posibles señales de alerta, evaluar la seguridad de las vacunas y tomar medidas preventivas o correctivas si es necesario.
A continuación encontrará el link para descargar las bases de datos descritas, necesarias para realizar las actividades del taller.
Descargar
carpeta del taller con las bases de datos.
Se recomienda establecer una estructura general de 4 bloques para generar un código de procesamiento de datos en R, par ayudar a organizar el flujo de trabajo y a asegurar que los análisis sean reproducibles y eficientes.
A continuación se presentan los 4 bloques y las principales actividades de cada uno:
Un ejemplo simple de código de R en la consola de RStudio bajo la estructura propuesta se vería así:
#-----------------------------------------------------------------------------
# 1. Preparación del ambiente de trabajo
#-----------------------------------------------------------------------------
# Cargar las bibliotecas necesarias
library(plotly)
library(dplyr)
library(ggplot2)
#-----------------------------------------------------------------------------
# 2. Carga de Datos
#-----------------------------------------------------------------------------
# Crear un dataframe de ejemplo con las fechas y la frecuencia de ocurrencia
data <- data.frame(
Fecha = seq(as.Date("2023-01-01"), as.Date("2023-12-31"), by = "days"),
Frecuencia = sample(1:10, 365, replace = TRUE)
)
#-----------------------------------------------------------------------------
# 3. Transformación y análisis de datos
#-----------------------------------------------------------------------------
# Convertir la fecha a semana epidemiológica
data$SemanaEpidemiologica <- as.integer(format(data$Fecha, "%U"))
# Agregar los valores de frecuencia por semana epidemiológica
data_summarized <- data %>%
group_by(SemanaEpidemiologica) %>%
summarise(Frecuencia = sum(Frecuencia))
#-----------------------------------------------------------------------------
# 4. Visualización de datos
#-----------------------------------------------------------------------------
# Crear el gráfico de serie de tiempo con Plotly
plot_ly(data = data_summarized, x = ~SemanaEpidemiologica, y = ~Frecuencia,
type = 'scatter', mode = 'lines') %>%
layout(title = "Serie de Tiempo de Frecuencia de Ocurrencia",
xaxis = list(title = "Semana Epidemiológica"),
yaxis = list(title = "Frecuencia"))
¿Por qué es crucial el análisis sistemático de los datos de vigilancia de ESAVI para la toma de decisiones?
¿Qué beneficios aporta un análisis sistemático de ESAVI al fortalecimiento de seguridad de vacunas?
¿Cuáles son los objetivos clave que debe cumplir el análisis de datos de seguridad de vacunas?
Al final de este taller usted podrá comprender la importancia del análisis sistemático de los datos de vigilancia de ESAVI para la toma de decisiones en seguridad de vacunas.
Parte 1: Reflexiones previas acerca del análisis (15mins)
Parte 2: Espacio práctico (15mins)
Parte 3: Socialización de resultados (15mins)
Mario y Zuly se encuentran muy motivados y quieren comenzar a realizar su trabajo cuanto antes. Como líder del equipo de seguridad de vacunas, usted propone sistematizar la tarea y diseñar un flujograma que ayude a que los nuevos compañeros comprendan la lógica detrás del análisis descriptivo de datos para la toma de decisiones en seguridad de vacunas.
Piense en cuáles deberían ser las decisiones que el equipo debería tomar para definir qué análisis debería llevar a cabo.
(15mins)
Reflexione en grupo:
¿qué objetivos debiera cumplir el análisis de datos de seguridad de vacunas? Definan al menos 2 objetivos. Justifiquen cada uno de ellos.
¿Cómo debiera ser el procedimiento “ideal” para el análisis de datos de seguridad de vacunas? Describan brevemente los pasos a seguir, justificando cada uno de ellos.
Reflexione en grupo sobre su práctica habitual para el análisis de datos de seguridad de vacunas: ¿se cumplen los objetivos del punto 1? ¿qué procedimientos no se realizan? ¿qué obstáculos encuentran?
(15mins)
En grupo, dibuje/grafique un flujograma en el que se refleje el árbol de decisiones que su equipo sigue habitualmente para el análisis de datos de vigilancia de ESAVI para la toma de decisiones en seguridad de vacunas.
¿Qué ventajas ofrece el análisis de serie de tiempo para la vigilancia de ESAVI?
¿Qué insumos son necesarios para llevar a cabo un análisis de serie de tiempo efectivo en el contexto de ESAVI?
¿Qué indicadores específicos deben monitorear en un período definido de tiempo para la vigilancia de ESAVI?
¿Cómo se interpretan los resultados de un análisis de serie de tiempo en el contexto de la seguridad de vacunas?
Conocer los aportes del análisis de serie de tiempo para la vigilancia de ESAVI.
Identificar los insumos que se requieren para llevar a cabo un análisis de serie de tiempo.
Aprender a realizar un análisis de serie de tiempo en RStudio.
Interpretar un análisis de serie de tiempo en el contexto de seguridad de vacunas.
Parte 1: Reflexiones previas acerca del análisis (10mins trabajo en grupo / 15mins plenaria)
Parte 2: Capsula teórico-práctica - Caso ejemplo ventas (30mins explicación / 60mins práctica guiada en R)
Parte 3: Espacio práctico en RStudio - Caso Botania (90mins)
Parte 4: Interpretación de resultados: (10mins)
Parte 5: Socialización de resultados (10mins)
(10mins trabajo en grupo / 15mins plenaria)
¿Qué indicadores son los que deben monitorear en el período definido?
¿Cómo pueden visualizar el comportamiento del indicador a través del tiempo?
¿Qué técnica de análisis estadístico les serviría para conocer si hubo algún desvío que deba llamar su atención?
(30mins explicación / 60mins práctica guiada en R)
Los dueños de un almacén de grandes superfices, quieren visualizar como han ido las ventas durante el período 2017-2023. Para ello, construyeron la siguiente serie de tiempo, que presenta las ventas mensuales desde enero de 2017 hasta diciembre 2023.
Los elementos necesarios para crear esta serie de tiempo se presentan a continuación:
Variables: las variables necesarias para crear la serie temporal son
Funciones y parámetros:
Los argumentos de esta función
ts(data = souvenir, frequency = 12, start = c(2016, 1))
Los argumentos de esta función son:
data: son los números o valores que me interesa analizar a lo largo del tiempo. En nuestro ejemplo, interesa graficar las ventas mensuales durante el período 2016-2023.
frequency: Se refiere a la cantidad de veces que se recopilan datos en un período de tiempo específico. En nuestro ejemplo, los dueños de la tienda recopilaron datos de sus ventas en forma mensual. Entonces, la frecuencia es 12 (porque hay 12 meses en un año). Si hubiesen recopilado las ventas cada 3 meses, la frecuencia sería 4 (porque hay 4 trimestres en un año).
start: es el punto de partida de la serie de tiempo y se anota de la siguiente manera “start=c (año de inicio, mes de inicio)”. Entonces, como en nuestro ejemplo los dueños quieren analizar el comportamiento de las ventas a partir de enero 2016, el argumento start quedaría así: start c=(2017,1)
Los argumentos de esta función son:
A continuación, se presenta el código de R que contiene los elementos expuestos y la lógica necesaria para la creación de la serie de tiempo (tener en cuenta que se presenta en la estructura de código propuesta en la metodología).
Descargar
Script Caso Ventas - Actividad 2
# :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# ACTIVIDAD 2
# :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#-----------------------------------------------------------------------------
# 1. Preparación del ambiente de trabajo
#-----------------------------------------------------------------------------
# 1.1 Carga de librerías
library(readxl) # librería para carga de archivos de excel a R
library(tidyverse) # librería para procesamiento y transformación de bases de datos
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats 1.0.0 ✔ readr 2.1.5
## ✔ ggplot2 3.5.1 ✔ stringr 1.5.1
## ✔ lubridate 1.9.3 ✔ tibble 3.2.1
## ✔ purrr 1.0.2 ✔ tidyr 1.3.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ purrr::compose() masks flextable::compose()
## ✖ dplyr::filter() masks stats::filter()
## ✖ lubridate::hms() masks hms::hms()
## ✖ dplyr::lag() masks stats::lag()
## ✖ officer::read_xlsx() masks readxl::read_xlsx()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# 1.2 Manejo de comandos en la librería dplyr
select <- dplyr::select # Definiendo el comando select de la librería dplyr
filter <- dplyr::filter # Definiendo el comando filter de la librería dplyr
#-----------------------------------------------------------------------------
# 2. Carga de Datos
#-----------------------------------------------------------------------------
#- 2.1 Definición de rutas
#- Seguir las instrucciones del facilitador
#- 2.2 Cargar archivo(s) de datos
Ventas_17 <- read_excel(path = "Fuentes de Datos/BD_Caso_Ejemplo_Ventas.xlsx", sheet = "2017")
Ventas_18 <- read_excel(path = "Fuentes de Datos/BD_Caso_Ejemplo_Ventas.xlsx", sheet = "2018")
Ventas_19 <- read_excel(path = "Fuentes de Datos/BD_Caso_Ejemplo_Ventas.xlsx", sheet = "2019")
Ventas_20 <- read_excel(path = "Fuentes de Datos/BD_Caso_Ejemplo_Ventas.xlsx", sheet = "2020")
Ventas_21 <- read_excel(path = "Fuentes de Datos/BD_Caso_Ejemplo_Ventas.xlsx", sheet = "2021")
Ventas_22 <- read_excel(path = "Fuentes de Datos/BD_Caso_Ejemplo_Ventas.xlsx", sheet = "2022")
#- 2.3 Consolidación de la base de datos con todos los años (2017 a 2022)
ventas <- bind_rows(Ventas_17, Ventas_18, Ventas_19, Ventas_20, Ventas_21, Ventas_22)
#- 2.4 Comando para ver los datos tabulares en la consola de RStudio
head(ventas, 20)
## # A tibble: 20 × 7
## Provincia Sexo Grupo_edad Tienda Año Mes Ventas
## <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 Rosales Femenino <18 años Dalia 2017 1 50.3
## 2 Rosales Femenino <18 años Dalia 2017 1 120.
## 3 Rosales Femenino <18 años Dalia 2017 1 67.3
## 4 Rosales Femenino <18 años Dalia 2017 1 134.
## 5 Rosales Femenino <18 años Dalia 2017 1 142.
## 6 Rosales Femenino <18 años Dalia 2017 1 16.4
## 7 Rosales Femenino <18 años Dalia 2017 1 83.9
## 8 Rosales Femenino <18 años Dalia 2017 1 135.
## 9 Rosales Femenino <18 años Dalia 2017 1 87.2
## 10 Rosales Femenino <18 años Dalia 2017 1 73.9
## 11 Rosales Femenino <18 años Dalia 2017 1 144.
## 12 Rosales Femenino <18 años Dalia 2017 1 73.5
## 13 Rosales Femenino <18 años Dalia 2017 1 105.
## 14 Rosales Femenino <18 años Dalia 2017 1 90.2
## 15 Rosales Femenino <18 años Dalia 2017 1 24.4
## 16 Rosales Femenino <18 años Dalia 2017 1 136.
## 17 Rosales Femenino <18 años Dalia 2017 1 44.4
## 18 Rosales Femenino <18 años Dalia 2017 1 15.9
## 19 Rosales Femenino <18 años Dalia 2017 1 55.9
## 20 Rosales Femenino <18 años Dalia 2017 1 144.
#- 2.5 Código para ir liberando memoria (computadores poco recientes)
rm(Ventas_17, Ventas_18, Ventas_19, Ventas_20, Ventas_21, Ventas_22)
gc(reset = TRUE)
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 1361605 72.8 2276188 121.6 1361605 72.8
## Vcells 28541372 217.8 58614518 447.2 28541372 217.8
#-----------------------------------------------------------------------------
# 3. Transformación y análisis de datos
#-----------------------------------------------------------------------------
#- 3.1 Realiza el cálculo del total de ventas de la tienda por mes y año
Ventas_M_A <- ventas %>% select(Año, Mes, Ventas) %>% # De la base de datos llamada Ventas Selecciona las variables Año, Mes y Ventas
group_by(Año, Mes) %>% # Define los niveles de agrupación de información (Año y Mes)
summarise(Ventas = sum(Ventas)) %>% # Calcula la suma de ventas por los niveles de agrupación anteriores
as.data.frame() # Convierte Ventas_M_A en un marco de datos
## `summarise()` has grouped output by 'Año'. You can override using the `.groups`
## argument.
#- 3.2 Comando para ver los datos tabulares en la consola de RStudio
head(Ventas_M_A)
## Año Mes Ventas
## 1 2017 1 4159183
## 2 2017 2 4140631
## 3 2017 3 4173844
## 4 2017 4 4172136
## 5 2017 5 4192160
## 6 2017 6 4180979
#- 3.3 Ajustar los datos al formato necesario para el análisis que voy a
#- llevar a cabo. En este caso, para una serie de tiempo.
tienda <- ts(Ventas_M_A$Ventas, frequency = 12, start = c(2017, 1))
#- 3.4 Visualización de los datos en formato de serie de tiempo
head(tienda)
## [1] 4159183 4140631 4173844 4172136 4192160 4180979
#-----------------------------------------------------------------------------
# 4. Visualización de datos
#-----------------------------------------------------------------------------
#- 4.1 Crear y visualizar el gráfico de serie de tiempo
plot.ts(x = tienda, lwd = 3, xlab = "Año", ylab = "Ventas",
main = "Ventas del almacén en Botania (2017-2023)")
(90mins)
Ahora que Zuly y Mario tienen una ruta clara sobre la que estructurar el análisis de datos, se disponen a realizar dicho procedimiento utilizando para eso la base de datos de vigilancia de ESAVI de Botania.
Recordemos: Mario y Zuly quieren analizar el comportamiento de las notificaciones de ESAVI que se recibieron durante 2022 y 2023.
Para comenzar, exploran la tendencia que siguieron las notificaciones de ESAVI a lo largo del año 2022 y 2023.
Para la siguiente actividad se van a plantear 3 retos a trabajar en el caso de Botania. Por favor preste atención al facilitador de la actividad y siga las instrucciones de la presentación.
A continuación, se presenta el código de R que contiene los elementos expuestos y la lógica necesaria para el desarrollo del ejercicio.
Descargar
Script Caso Botania - Actividad 2
En la Sección 3.3 se debe reemplazar XXXXXX por la unidad temporal correcta. ¿Cuál es la frecuencia de observación de notificaciones (escribir el número en el código)?
En la Sección 3.2 se debe reemplazar YYYY y ZZZZ por el periodo de inicio de la serie. ¿A partir de qué año y mes comienza a observarse la notificación?
(10mins)
Analice la serie de tiempo de notificaciones de ESAVI de Botania y realice una descripción general de los principales hallazgos.
¿Qué factores pueden explicar el patrón observado? ¿Cuáles son sus hipótesis?
¿Qué recomendaría a Mario y Zuly continuar el análisis?
#Preguntas
¿Qué indicadores deben monitorear para explorar el comportamiento de las notificaciones de ESAVI?
¿Qué insumos son necesarios para construir los indicadores que permitan analizar las notificaciones de ESAVI?
¿Qué insumos son necesarios para construir los indicadores que permitan analizar las notificaciones de ESAVI?
¿Qué gráficos serían más efectivos para presentar los resultados del análisis de las notificaciones de ESAVI?
Al final de este taller usted podrá explorar el comportamiento que siguieron las notificaciones de ESAVI a lo largo del primer semestre del año 2023, determinando si factores sociodemográficos influyeron en este o si existen comportamientos particulares en dichos factores.
Parte 1: Reflexiones previas acerca del análisis (15mins trabajo en grupo / 15mins plenaria)
Parte 2: Capsula teórico-práctica - Caso ejemplo ventas (30mins explicación / 60mins práctica guiada en R)
Parte 3: Espacio práctico en RStudio - Caso Botania (1hra 40mins)
Parte 4: Interpretación de resultados: (15mins)
Parte 5: Socialización de resultados (35mins)
(15mins trabajo en grupo / 15mins plenaria)
De acuerdo con la estrategia de análisis trazada por Zuly y Mario, responda:
¿Qué indicadores deberían monitorear para responder sus preguntas de interés?
¿Qué insumos necesitan para construir dichos indicadores?
¿Qué gráficos les recomendaría utilizar para presentar sus resultados?
(30mins explicación / 60mins práctica guiada en R)
Los dueños del almacén quieren visualizar como han ido las ventas del período de estudio (2017-2023) desagregado por la provincia de Botania, las tiendas y las variables sociodemográficas de sus clientes.
Para ello, construyeron los siguientes análisis exploratorios:
Total de ventas del almacén por provincias en donde se ubica la tienda (2017-2023)
Total de ventas del almacén por nombre de la tienda (2017-2023)
Total de ventas del almacén de Botania por sexo y grupo etario(2017-2023)
Los elementos necesarios para crear estas salidas son los siguientes:
Variables: las variables necesarias para crear las tablas y los gráficos son:
Funciones y parámetros:
Los argumentos de esta función son:
freq(“nombre de la variable”)
plot_frq(data, title = “Titulo Grafico”) + xlab(“Nom Var Eje X”) + ylab(“Nom Var Eje Y”)
Los argumentos de esta función son: * data: en este argumento se especifica la variable por graficar * title: Título del gráfico
Argumentos adicionales externos a la función * xlab = Título del eje X * ylab = Título del eje Y
plot_ly(data, labels=~”variableA”, values=~”Conteo Variable A”, type)
Los argumentos de esta función son: * data: en este argumento se especifica el data frame con la tabla de conteos * labels: etiquetas con las categorías de la variable * values: conteos de la variable categórica bajo análisis * type: tipo de gráfico por realizar, la opción de interés es “pie”
filter(“Variable” “Operador lógico” “Valor”)
Los argumentos de esta función son: * variable: nombre de la variable sobre la que se va a aplicar el filtro * Operador lógico * Valor: valor sobre el que se hace la comparación lógica
ggsave(plot, filename, device, width, height, units)
Los argumentos de esta función son: * plot: nombre objeto grafico R * filename: Nombre archivo imagen con extensión * device: extensión de imagen * width: ancho de la imagen * *height: alto de la imagen * units**: unidades en que se exporta
write.xlsx(“nombre objeto”, “Nombre Archivo Excel.xlsx”)
A continuación, se presenta el código de R que contiene los elementos expuestos y la lógica necesaria para la creación de los gráficos (tener en cuenta que se presenta en la estructura de código propuesta en la sección de “R Conceptos y Definiciones”).
A continuación, se presenta el código de R que contiene los elementos expuestos y la lógica necesaria para la creación de la serie de tiempo (tener en cuenta que se presenta en la estructura de código propuesta en la metodología).
Descargar
Script Caso Ventas - Actividad 3A
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# ACTIVIDAD 3 - Parte A
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#---------------------------------------------------------------------------------------------------------------------
# 1. Preparación del ambiente de trabajo
#---------------------------------------------------------------------------------------------------------------------
#- 1.1 Carga de librerías -#
library(readxl) # Librería para carga de archivos de excel a R
library(openxlsx) # Exportar archivos Excel
## Warning: package 'openxlsx' was built under R version 4.4.1
library(tidyverse) # Librería para procesamiento y transformación de bases de datos
library(sjPlot) # Paquete de gráficos y tablas
## Install package "strengejacke" from GitHub (`devtools::install_github("strengejacke/strengejacke")`) to load all sj-packages at once!
library(plotly) # Paquete para el gráfico circular
## Warning: package 'plotly' was built under R version 4.4.1
##
## Adjuntando el paquete: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following objects are masked from 'package:flextable':
##
## highlight, style
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(summarytools) # Tabla de frecuencia univariada
##
## Adjuntando el paquete: 'summarytools'
## The following object is masked from 'package:tibble':
##
## view
#- 1.2 Manejo de comandos en la librería dplyr -#
select <- dplyr::select # Definiendo el comando select de la librería dplyr
filter <- dplyr::filter # Definiendo el comando filter de la librería dplyr
#---------------------------------------------------------------------------------------------------------------------
# 2. Carga de Datos
#---------------------------------------------------------------------------------------------------------------------
#- 2.1 Definición de ruta de archivos de datos -#
#- Seguir las instrucciones del facilitador -#
#- 2.2 Cargar archivo(s) de datos -#
Ventas_17 <- read_excel(path = "Fuentes de Datos/BD_Caso_Ejemplo_Ventas.xlsx", sheet = "2017")
Ventas_18 <- read_excel(path = "Fuentes de Datos/BD_Caso_Ejemplo_Ventas.xlsx", sheet = "2018")
Ventas_19 <- read_excel(path = "Fuentes de Datos/BD_Caso_Ejemplo_Ventas.xlsx", sheet = "2019")
Ventas_20 <- read_excel(path = "Fuentes de Datos/BD_Caso_Ejemplo_Ventas.xlsx", sheet = "2020")
Ventas_21 <- read_excel(path = "Fuentes de Datos/BD_Caso_Ejemplo_Ventas.xlsx", sheet = "2021")
Ventas_22 <- read_excel(path = "Fuentes de Datos/BD_Caso_Ejemplo_Ventas.xlsx", sheet = "2022")
#- 2.3 Consolidación de la base de datos con todos los años (2017 a 2022) -#
ventas <- bind_rows(Ventas_17, Ventas_18, Ventas_19, Ventas_20, Ventas_21,
Ventas_22)
#- 2.4 Comando para ver los datos tabulares en la consola de RStudio -#
head(ventas, 20)
## # A tibble: 20 × 7
## Provincia Sexo Grupo_edad Tienda Año Mes Ventas
## <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl>
## 1 Rosales Femenino <18 años Dalia 2017 1 50.3
## 2 Rosales Femenino <18 años Dalia 2017 1 120.
## 3 Rosales Femenino <18 años Dalia 2017 1 67.3
## 4 Rosales Femenino <18 años Dalia 2017 1 134.
## 5 Rosales Femenino <18 años Dalia 2017 1 142.
## 6 Rosales Femenino <18 años Dalia 2017 1 16.4
## 7 Rosales Femenino <18 años Dalia 2017 1 83.9
## 8 Rosales Femenino <18 años Dalia 2017 1 135.
## 9 Rosales Femenino <18 años Dalia 2017 1 87.2
## 10 Rosales Femenino <18 años Dalia 2017 1 73.9
## 11 Rosales Femenino <18 años Dalia 2017 1 144.
## 12 Rosales Femenino <18 años Dalia 2017 1 73.5
## 13 Rosales Femenino <18 años Dalia 2017 1 105.
## 14 Rosales Femenino <18 años Dalia 2017 1 90.2
## 15 Rosales Femenino <18 años Dalia 2017 1 24.4
## 16 Rosales Femenino <18 años Dalia 2017 1 136.
## 17 Rosales Femenino <18 años Dalia 2017 1 44.4
## 18 Rosales Femenino <18 años Dalia 2017 1 15.9
## 19 Rosales Femenino <18 años Dalia 2017 1 55.9
## 20 Rosales Femenino <18 años Dalia 2017 1 144.
#- 2.5 Código para ir liberando memoria (computadores poco recientes) -#
rm(Ventas_17, Ventas_18, Ventas_19, Ventas_20, Ventas_21, Ventas_22)
gc(reset = TRUE)
## used (Mb) gc trigger (Mb) max used (Mb)
## Ncells 1642877 87.8 3128305 167.1 1642877 87.8
## Vcells 28960180 221.0 90488734 690.4 28960180 221.0
#---------------------------------------------------------------------------------------------------------------------
# 3. Transformación y análisis de datos / 4. Visualización de datos y Generación de Salidas
#---------------------------------------------------------------------------------------------------------------------
#- 3.1 Definición de ruta de salida de gráficos y tabla -#
#- Seguir las instrucciones del facilitador -#
###--------------------------------###
###--------------------------------###
###--- 3.2 Análisis x Provincia ---###
###--------------------------------###
###--------------------------------###
#-------------------------------------------------------------------------#
#- 3.2.1 Tabla 1. Tabla de frecuencia del número de ventas por Provincia -#
#-------------------------------------------------------------------------#
#- a. Generación de la tabla de frecuencias -#
Tbl_Ventas_Prov <- freq(ventas$Provincia)
#- b. Visualización de resultados -#
Tbl_Ventas_Prov <- cbind(names(Tbl_Ventas_Prov[,1]), Tbl_Ventas_Prov) %>%
as.data.frame()
Tbl_Ventas_Prov
## V1 Freq % Valid % Valid Cum.
## Helecho Helecho 789428 21.1914691658148 21.1914691658148
## Pipian Pipian 724876 19.4586300499085 40.6500992157233
## Robledalia Robledalia 764672 20.5269170968878 61.1770163126111
## Rosales Rosales 1446240 38.8229836873889 100
## <NA> <NA> 0 <NA> <NA>
## Total Total 3725216 100 100
## % Total % Total Cum.
## Helecho 21.1914691658148 21.1914691658148
## Pipian 19.4586300499085 40.6500992157233
## Robledalia 20.5269170968878 61.1770163126111
## Rosales 38.8229836873889 100
## <NA> 0 100
## Total 100 100
#- c. Exportar los resultados a Excel -#
write.xlsx(Tbl_Ventas_Prov, "Tbl_Ventas_Prov.xlsx")
#--------------------------------------------------------------------------#
#- 3.2.2 Gráfico 1. Diagrama de barras del número de ventas por Provincia -#
#--------------------------------------------------------------------------#
#- a. Generación del gráfico de barras -#
Grf_Ventas_Prov <- plot_frq(data = ventas$Provincia, sort.frq = "asc",
coord.flip = T, hjust = "left") + xlab("Provincia") +
ylab("Número de ventas") + ggtitle("Total de ventas del almacén en Botania (2017-2023)")
#- b. Visualización de resultados -#
Grf_Ventas_Prov
#- c. Exportar gráfico en extensión bmp -#
ggsave(plot = Grf_Ventas_Prov, filename = "Grf_Ventas_Prov.bmp", device = "bmp",
width = 22, height = 12, units = "cm")
###-----------------------------###
###-----------------------------###
###--- 3.3 Análisis x Tienda ---###
###-----------------------------###
###-----------------------------###
#----------------------------------------------------------------------#
#- 3.3.1 Tabla 2. Tabla de frecuencia del número de ventas por tienda -#
#----------------------------------------------------------------------#
#- a. Generación de la tabla de frecuencias -#
Tbl_Ventas_Tienda <- freq(ventas$Tienda)
#- b. Visualización de resultados -#
Tbl_Ventas_Tienda
## Frequencies
## ventas$Tienda
## Type: Character
##
## Freq % Valid % Valid Cum. % Total % Total Cum.
## --------------- --------- --------- -------------- --------- --------------
## Dalia 701180 18.82 18.82 18.82 18.82
## Lavanda 724876 19.46 38.28 19.46 38.28
## Lirio 745060 20.00 58.28 20.00 58.28
## Margarita 764672 20.53 78.81 20.53 78.81
## Oquídea 789428 21.19 100.00 21.19 100.00
## <NA> 0 0.00 100.00
## Total 3725216 100.00 100.00 100.00 100.00
#- c. Exportar los resultados a Excel -#
write.xlsx(Tbl_Ventas_Tienda, "Tbl_Ventas_Tienda.xlsx")
#----------------------------------------------------------------------#
#- 3.3.2 Gráfico 2. Diagrama de torta del número de ventas por Tienda -#
#----------------------------------------------------------------------#
#- a. Preparación de la tabla para generar el gráfico -#
NV_Tienda <- cbind.data.frame(Tienda = names(Tbl_Ventas_Tienda[,1]),
Num_Ventas = Tbl_Ventas_Tienda[,1])
#- b. Visualización de tabla de frecuencias -#
NV_Tienda
## Tienda Num_Ventas
## Dalia Dalia 701180
## Lavanda Lavanda 724876
## Lirio Lirio 745060
## Margarita Margarita 764672
## Oquídea Oquídea 789428
## <NA> <NA> 0
## Total Total 3725216
#- c. Generar el gráfico en extensión bmp -#
fig <- plot_ly(labels = ~NV_Tienda$Tienda, values = ~NV_Tienda$Num_Ventas,
type = 'pie', title = "Diagrama circular del número de ventas por tienda")
fig
###--------------------------------------------------------###
###--------------------------------------------------------###
###--- 3.4 Análisis por Grupo Etario y Sexo (Bivariado) ---###
###--------------------------------------------------------###
###--------------------------------------------------------###
#-----------------------------------------------------------------------------------#
#- 3.4.1 Tabla 3. Tabla de frecuencia del número de ventas por grupo etario y sexo -#
#-----------------------------------------------------------------------------------#
#- a. Generación de la tabla de frecuencias -#
Tbl_Ventas_GE_Sexo <- tab_xtab(var.row = ventas$Sexo,
var.col = ventas$Grupo_edad,
show.cell.prc = T, show.col.prc = T,
show.row.prc = T, encoding = "UTF-8")
#- b. Visualización de resultados -#
Tbl_Ventas_GE_Sexo
| Sexo | Grupo_edad | Total | |||
|---|---|---|---|---|---|
| <18 años | 18 - 25 años | 25 - 50 años | 50 años o más | ||
| Femenino |
289660 19 % 37.5 % 7.8 % |
369768 24.3 % 41.6 % 9.9 % |
414091 27.2 % 42.6 % 11.1 % |
449876 29.5 % 41.2 % 12.1 % |
1523395 100 % 40.9 % 40.9 % |
| Masculino |
483661 22 % 62.5 % 13 % |
518820 23.6 % 58.4 % 13.9 % |
557786 25.3 % 57.4 % 15 % |
641554 29.1 % 58.8 % 17.2 % |
2201821 100 % 59.1 % 59.1 % |
| Total |
773321 20.8 % 100 % 20.8 % |
888588 23.9 % 100 % 23.9 % |
971877 26.1 % 100 % 26.1 % |
1091430 29.3 % 100 % 29.3 % |
3725216 100 % 100 % 100 % |
χ2=5198.318 · df=3 · Cramer’s V=0.037 · p=0.000 |
#-----------------------------------------------------------------------------#
#- 3.4.2 Gráfico 3. Diagrama de barras del número de ventas por grupo etario -#
#- y sexo -#
#-----------------------------------------------------------------------------#
#- a. Generación del gráfico de barras -#
Grf_Ventas_GE_Sexo <- plot_grpfrq(var.cnt = ventas$Sexo,
var.grp = ventas$Grupo_edad,
legend.title = "Grupos de edad",
title = "Número de ventas del almacén por sexo y grupo de edad (2017-2023)") +
xlab("Sexo") + ylab("Conteos / porcentaje")
## Warning in plot_grpfrq(var.cnt = ventas$Sexo, var.grp = ventas$Grupo_edad, :
## NAs introducidos por coerción
## Warning in plot_grpfrq(var.cnt = ventas$Sexo, var.grp = ventas$Grupo_edad, :
## NAs introducidos por coerción
#- b. Visualización de resultados -#
Grf_Ventas_GE_Sexo
#- c. Exportar gráfico en extensión bmp -#
ggsave(plot = Grf_Ventas_GE_Sexo, filename = "Grf_Ventas_GE_Sexo.bmp",
device = "bmp", width = 22, height = 12, units = "cm")
###----------------------###
###--- Fin del código ---###
###----------------------###
(1hra 40mins)
Mario y Zuly, notan que hay un aumento significativo en las notificaciones de ESAVI a partir del 2 de marzo de 2023 hasta el 6 de mayo. Además, observan que el patrón se repite en forma cíclica.
Ellos se preguntan ¿qué puede estar causando este fenómeno?, y ¿si tiene alguna implicancia para la seguridad de las vacunas?
Por lo tanto, deciden investigar el origen y la naturaleza del aumento de las notificaciones, usando diferentes fuentes de información y métodos de análisis.
Para ello, inician el análisis a nivel sociodemográfico teniendo como guía los siguientes interrogantes de interés para la vigilancia:
¿El aumento de notificaciones se distribuye en forma homogénea a nivel geográfico o existe alguna concentración por provincia, región sanitaria, departamento?
¿Las notificaciones que generaron el aumento se concentran en algún grupo poblacional específico?
Mario y Zuly quieren analizar el comportamiento de las notificaciones de ESAVI que se recibieron durante 2022 y 2023, a partir de la ubicación geográfica (provincia de Botania) y de las variables sociodemográficas (sexo y grupo etario),
Para la siguiente actividad se van a plantear 3 retos a trabajar en el caso de Botania. Por favor preste atención al facilitador de la actividad y siga las instrucciones de la presentación.
A continuación, se presenta el código de R que contiene los elementos expuestos y la lógica necesaria para el desarrollo del ejercicio.
Descargar
Script Caso Botania - Actividad 3A
(15mins)
Para complementar el análisis sociodemográfico, Mario y Zuly generaron los siguientes gráficos. Utilicelos junto con los gráficos generados por usted, para responder las siguientes preguntas de interpretación:
1.Describa el comportamiento de las notificaciones de ESAVI a nivel geográfico.
Teniendo presente que el análisis realizado por Mario y Zuly se basa en la ubicación del establecimiento notificador, ¿cómo interpreta los resultados?
¿Cómo interpretaría los resultados si el nivel geográfico analizado correspondiese a la ubicación del establecimiento vacunador? ¿Y si correspondiese al sitio de residencia de la persona afectada?
Mario y Zuly observan que las notificaciones se concentran en hombres, pero no en un grupo etario específico. ¿Coincide con esta apreciación? Argumente su respuesta basándose en la interpretación de los resultados.
Reflexione sobre los intervalos utilizados para construir los grupos de edad ¿Es adecuado para el monitoreo de seguridad de vacunas? Argumente su respuesta desde el punto de vista de la farmacovigilancia de vacunas.
Nota: Por cada uno de los resultados presentados a contiuación por Mario y Zuly, anotar 2 o 3 hallazgos que pueda obtener de ellos. Y al final con estos hallazgos armar un diagnóstico de su interpretación.
Una vez que obtuvieron una representación del comportamiento de las notificaciones a nivel sociodemográfico, Zuly y Mario deciden que es necesario calcular la Tasa de notificación de ESAVI específica entre marzo 2023 y mayo 2023, para los siguientes niveles de análisis:
Tasa de notificación por sistema organo clase (SOC).
Tasa de notificación por término preferido (PT).
Adicionalmente, deciden realizar los siguientes análisis bivariados:
Tasa de notificación por sexo y gravedad del evento.
Tasa de notificación por vacuna y gravedad del evento.
Los dueños del almacen desean revisar la efectividad de las ventas de acuerdo al volumen de visitas que el almacen recibe cada mes. Para eso establece la “Tasa de venta efectiva por cada 1000 visitas recibidas” durante octubre a diciembre de 2022 como métrica de efectividad. También les resulta de interés desagregar la tasa de venta efectiva por sexo de las personas que visitaron cada una de las tiendas del almacen.
Para la ejecución de este requerimiento es necesario tener en cuenta que existen elementos claves para calcular una tasa:
El siguiente ejercicio requiere entonces de dos fuentes distintas de información.
A continuación, se presenta el código de R que contiene los elementos expuestos y la lógica necesaria para el cálculo de la “Tasa de venta efectiva por cada 1000 visitas recibidas” en un periodo de tiempo t.
…
A continuación, se presenta el código de R que contiene los elementos expuestos y la lógica necesaria para la creación de la serie de tiempo (tener en cuenta que se presenta en la estructura de código propuesta en la metodología).
Descargar
Script Caso Ventas - Actividad 3B
Mario y Zuly quieren comparar la tasa de notificación de ESAVI durante marzo a mayo de 2023, por las variables de interés propuestas anteriormente.
Para la siguiente actividad se van a plantear 3 retos a trabajar en el caso de Botania. Por favor preste atención al facilitador de la actividad y siga las instrucciones de la presentación.
A continuación, se presenta el código de R que contiene los elementos expuestos y la lógica necesaria para el desarrollo del ejercicio.
Descargar
Script Caso Botania - Actividad 3B
El incremento de las notificaciones corresponde a eventos posteriores a la administración de NeumoSTOP. ¿Coincide con esta apreciación? Argumente su respuesta basándose en la interpretación de los resultados del análisis realizado.
La mayoría de los ESAVI reportados corresponden a eventos no graves. Argumente su respuesta basándose en la interpretación de los resultados obtenidos.
Los eventos reportados se encuentran descritos en el perfil de seguridad de la vacuna y están dentro de la frecuencia esperada. Interprete los resultados obtenidos basándose en los resultados obtenidos y en la revisión del perfil de seguridad de la vacuna que se encuentra en la carpeta del participante.
Llegados a este punto, Mario y Zuly deben tomar decisiones y definir el curso de acción empleando el análisis realizado. ¿Cuál/es de los siguientes escenarios de decisión es/son recomendable/s que sigan los protagonistas?:
Adoptar una conducta expectante mientras revisan en forma exhaustiva los casos individuales recibidos.
Se ponen en contacto con la Centro Nacional de Farmacovigilancia de Botania para consultar si hubo reportes de señales de alerta en la seguridad de la vacuna.
Se ponen en contacto con el área de epidemiología para indagar si hay un brote en curso en Florandia y Robledalia.
Deciden realizar una investigación exhaustiva en campo para identificar factores de exposición ambientales que expliquen el incremento en los casos.
Comparan los hallazgos con los datos de cobertura vacunal para ver si existe coincidencia con alguna campaña de vacunación realizada durante el período de interés.
Se reunen con las autoridades de salud de Florandia y Robledalia así como los responsables del PAI para identificar si hubo cambios en las prácticas de inmunización durante el período de interés.
Conocer y aplicar un procedimiento sistemático para la identificación de señales a partir del análisis exploratorio de datos de vigilancia de ESAVI.
Parte 1: Reflexiones previas acerca del análisis (10 mins trabajo en grupo / 10 mins plenaria)
Parte 2: Capsula teórico-práctica - Caso ejemplo ventas (30 mins)
Parte 3: Espacio práctico en RStudio - Caso Botania (90 mins)
Parte 4: Interpretación de resultados: (30 mins)
Parte 5: Socialización de resultados (30 mins)
Definan en grupo los pasos a seguir para identificar si los datos de vigilancia de ESAVI respaldan la existencia de una señal de alerta en seguridad de vacunas.
¿Por qué considera que Mario y Zuly no identificaron ningún patrón concordante con lo publicado en los medios?
Teniendo en cuenta que la base de datos de vigilancia de ESAVI de Botania utiliza MedDRA como estándar terminológico para la codificación de diagnósticos y procedimientos, respondan:
¿Cómo se debería efectuar la consulta para identificar casos potenciales del evento de interés? Argumente su respuesta
Explore el siguiente documento y seleccione la consulta que deberían realizar Mario y Zuly para encontrar casos potenciales del evento de interés en su base de datos de vigilancia de ESAVI.
En la presente actividad usted aprenderá a realizar:
Consultas estándarizadas sobre su base de datos para así identificar casos potenciales de un evento de interés.
Elaborar una tablas y gráficos que permitas resumir las características de los casos de interés (resultantes de la consulta estandarizada).
Para esta actividad, usted deberá realizar el cruce de la base de datos de Botania, con la consulta estandarizada de vasculitis desde marzo hasta noviembre de 2023. Con la salida anterior, debe caracterizar los casos encontrados a través de los siguientes análisis:
una tabla de distribución de ESAVI por vacuna
una tabla de distribución de ESAVI por Provincia de Botania
un Multiplot o gráfico múltiple de barras, con la distribución de ESAVI por vacuna por mes de interés
un Multiplot o gráfico múltiple de barras, con la distribución de ESAVI por Provincia de Botania y mes de interés
Finalmente, se realizará una consulta estandarizada limitándose al ámbito específico, para el periodo marzo - mayo de 2023.
A continuación, se presenta el código de R que contiene los elementos expuestos y la lógica necesaria para la creación de la serie de tiempo (tener en cuenta que se presenta en la estructura de código propuesta en la metodología).
Descargar
Script Caso Ventas - Actividad 4 (Vasculitis)
Para esta actividad, usted deberá realizar el cruce de la base de datos de Botania, con la consulta CMQ de Taquiarritmias, comparando los periodos octubre y noviembre de 2023
Posteriormente, con la salida anterior, debe caracterizar los casos encontrados a través de los siguientes análisis:
una tabla de distribución de ESAVI por vacuna
una tabla de distribución de ESAVI por Provincia de Botania
un Multiplot o gráfico múltiple de barras, con la distribución de ESAVI por vacuna por mes de interés
un Multiplot o gráfico múltiple de barras, con la distribución de ESAVI por Provincia de Botania y mes de interés
A continuación, realice la consulta estandarizada limitándose al ámbito específico, para el periodo octubre-noviembre 2023.
Finalmente, en su práctica de farmacovigilancia usted sabe que ante un evento adverso debe revisar la posibilidad de que el evento sea debido a otros medicamentos.
Evalúe que variable podría usar para evaluar la posibilidad de que el comportamiento observado sea debido a otro medicamento.
Piense qué análisis adicionales llevaría a cabo en su análisis exploratorio para evaluar dicha hipótesis. Ejecute dichos análisis.
NOTA: Ejecute el ejercicio teniendo en cuenta lo siguiente:
Revise el siguiente código ejemplo de consulta de ESAVI para el SMQ de Vasculitis
Revise el nombre de las variables que tiene en la base de Botania y sepa como se llaman las que requiere para el ejercicio.
Tenga presente los criterios de filtro que se esta pidiendo.
Tenga en cuenta como seleccionar variables de interés.
A continuación, se presenta el código de R que contiene los elementos expuestos y la lógica necesaria para el desarrollo del ejercicio.
Descargar
Script Caso Botania - Actividad 4 (Taquiarritmias)
Interprete los resultados y responda:
Describa los resultados obtenidos al aplicar la consulta estandarizada para el evento de interés, diferenciando los hallazgos, por ambito general y específico.
La base de datos de vigilancia de ESAVI de Botania, utiliza MedDRA como estándar terminologico para la codificación de diagnósticos y procedimientos médicos. Mencionene al menos 5 beneficios que aporta la implementación de un estándar terminológico internacional para la vigilancia de ESAVI.
Aprender a realizar análisis de desproporcionalidad e interpretar sus resultados.
Parte 1: Reflexiones previas acerca del análisis (10 mins trabajo en grupo / 10 mins plenaria)
Parte 2: Capsula teórico-práctica - Caso ejemplo ventas (60 mins)
Parte 3: Espacio práctico en RStudio - Caso Botania (60 mins)
Parte 4: Interpretación de resultados: (30 mins)
Parte 5: Socialización de resultados (30 mins)
Formule la pregunta que Mario y Zuly quieren responder mediante la aplicación de métodos cuantitativos para la detección de señales.
Dado el evento de interés ¿qué conjunto de términos utilizará para el procedimiento?
Defina el período sobre el cual efectuará el análisis
Grafique la tabla de 2x2 para el par vacuna-evento de interés durante el período seleccionado.
Tener en cuenta que cada uno de los métodos puede utilizar dos enfoques o criterios: “Criterio de decisión de Valor p” y “Criterio de información”, de tal manera que los bloques de código a ejecutar son 8, de la siguiente manera:
Primer enfoque: aproximación normal
Segundo enfoque: simulaciones Monte Carlo
A continuación usted encontrará el código de R que utiliza la librería PhDiV para utilizar los métodos de detección de señales PRR, ROR y el BCPNN para los casos de asociados al SMQ de Vasculítis.
Descargar
Script Caso Ventas - Actividad 4 (Vasculitis)
A continuación usted deberá realizar el cálculo del PRR, ROR y el BCPNN para la detección de señales para los casos asociados al CMQ de Taquiarritmias (Taquiarritmias supraventriculares (SMQ_1) y exploraciones complementarias, signos y síntomas relacionados con arritmias (SMQ_2)), a partir del planteado para el SMQ de Vasculítis.
Para esto se van a plantear 3 retos a trabajar en el caso de Botania. Por favor preste atención al facilitador de la actividad y siga las instrucciones de la presentación.
A continuación, se presenta el código de R que contiene los elementos expuestos y la lógica necesaria para el desarrollo del ejercicio.
Descargar
Script Caso Botania - Actividad 4 (Taquiarritmias)
¿Cuál fue el resultado de PRR, ROR y CI obtenido a partir de la aplicación del análisis?
Interprete el resultado obtenido de PRR, ROR y CI. ¿Considera que existe una señal? Argumente su respuesta.
Describa los pasos que se deberían dar continuación, en función de los resultados obtenidos.
A continuación encontrará el link para descargar material complementario y los códigos manejados en el taller:
Socialización de resultados
(15mins)
Elijan a un representante del grupo para compartir las refelxiones de las partes 1 y 2 durante la plenaria.